之前有個話題引發不少討論:程式設計師的極限年齡是35歲,超過這個年紀的話如果不當主管就會怎樣怎樣...雖然我個人認為這個是隨便講講的 (35歲以上還是很快樂的寫程式的人也很多啊),不過就當主管這件事,也不是任何人都可以當的,因為當了主管就是要管理 (Management),沒有做好管理工作的主管根本稱不上是主管...
管理這件事不外乎就是管理學所說的四件事:規劃 (Plan),組織 (Organize),領導 (Leadership) 與控制 (Control),以一個技術型主管來說,這四件事有這些不同的工作面向:
規劃:對技術上的規劃,不論是目前現有的 IT 技術,或是未來前瞻性的 IT 技術,都要事先收集情報,並分析它未來是否有機會成為市場的重要角色 (即市場敏感度),如果是,就要要求團隊預先準備,而除了技術以外,一些可標準化的流程能編製為 SOP,並指示團隊照章執行。而對高階主管,則是要規劃出技術發展的路線,對比較要求量化的高階主管則要以成本概念來將工作量化,不過這點筆者自己也認為不容易,因為知識產能想量化,標準也不是統一的。
組織:對技術的團隊的成員給予適當的組織,找到適當的人,讓人盡其用,發揮自己的專長,以及適當的規劃出人才的發展藍圖。這有一部份也是人資要做的事,但筆者自己的觀察,人資通常只會把這件事丟給主管,而鮮少有像技術背景的人資做這件事 :)。不僅對人,對事也要會組織,例如客戶丟來規格書以及一些零散的資料,主管要能安排並將它重新組織後成為一份對客戶的規格書或建議書。
領導:以自身的經驗以及能力來領導技術型的團隊,而不是用威權或職務來壓榨自己的團隊,而且也要適當的為團隊阻擋一些不合理的工作,但這個老實說也很難做,因為老闆若只是挺業務的話,業務當然就會坐大,這時主管要和老闆好好溝通,以確保時程或範圍不合理的工作進到團隊內。對團隊則是要以協助者的角色來協助下屬,或是幫他們找好資源讓他們可以專注在自己的工作上,而不是把工作丟下去後就什麼都不管了,連找資源這件事都要下屬自己做的話,不但生產效率會變差,這個主管也是不合格的主管。
控制:最直接的就是時程和成本的控制了,專案或研發都是有時間限制的,主管要一定時間 (例如每天的站立會議或是每週的定期會議等) 或不定時間向成員追蹤工作的進度,並發掘可能的問題 (例如時間控制以及資源供應) 以協助解決。另外就是品質的控制,適當做一些程式碼檢閱 (Code Review) 的工作,以確保基本品質以及發掘一些可能的潛在風險等。
基本上,想要轉型成主管,最少要懂得管理學以及專案管理 (Project Management),管理學是概念,專案管理則是執行專案時的可用做法與工具,以 PMBOK 所說的各領域而言,已經足夠用來執行各種專案了,軟體開發專案當然也是,但筆者自己不是 PMP,所以這部份就請有興趣的人去找找書或上個課 :)
所以,老鳥未來如果還是想寫程式,那就盡情的寫吧,不過若是想要轉主管或管理職,那麼基本的管理概念還是要有的,否則上了管理職,卻不知道自己該做什麼,那可就不妙了。